﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using GerTestes.Entity;
using GerTestes.Utilitarios;

namespace GerTestes.Cadastros
{
    public partial class CadastroSubModulo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregarGridProjetos();
            }
        }

        private void carregarGridProjetos()
        {
            DataTable dtDados = ControlClass.CNProjetos.getProjetos(TxtPesquisaGrid.Text);
            DataView dtDadosFiltrados = dtDados.AsDataView();
            dtDadosFiltrados.RowFilter = "ATIVO = 'S' ";
            gvwProjetos.DataSource = dtDadosFiltrados.ToTable();
            gvwProjetos.DataBind();
            gvwProjetos.SelectedIndex = -1;
        }

        private void carregarGridModulos()
        {
            int pProjeto = Convert.ToInt32(gvwProjetos.SelectedDataKey["ID_PROJETO"].ToString());
            DataTable dtDados = ControlClass.CNModulos.getModulos(pProjeto);
            DataView dtDadosFiltrados = dtDados.AsDataView();
            dtDadosFiltrados.RowFilter = "ATIVO = 'S' ";
            gvwModulos.DataSource = dtDadosFiltrados.ToTable();
            gvwModulos.DataBind();
            gvwModulos.SelectedIndex = -1;
        }

        private void carregarGridSubModulos()
        {
            int pModulo = Convert.ToInt32(gvwModulos.SelectedDataKey["ID_MODULO"].ToString());
            gvwSubModulos.DataSource = ControlClass.CNSubModulos.getSubModulos(pModulo);
            gvwSubModulos.DataBind();
            gvwSubModulos.SelectedIndex = -1;
        }

        protected void gvwProjetos_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlModulos.Visible = true;
            pnlSubModulos.Visible = false;
            carregarGridModulos();

        }

        protected void gvwModulos_SelectedIndexChanged(object sender, EventArgs e)
        {
            pnlSubModulos.Visible = true;
            carregarGridSubModulos();
        }

        protected void btnIncluirSubModulo_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = true;
            pnlSubModulos.Visible = false;
            pnlProjetos.Enabled = false;
            pnlModulos.Enabled = false;
            ThiagoSoftware.Upgrade.UtilForms.LimparCampos(pnlEdicao);
            btnConfirmar.CommandName = "Incluir";
            lblPnlDescricao.Text = "Inclusão SubMódulo";
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = false;
            pnlSubModulos.Visible = true;
            pnlProjetos.Enabled = true;
            pnlModulos.Enabled = true;
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            SubModulo subModulo = new SubModulo();
            //subModulo.CodProjeto = Convert.ToInt32(gvwProjetos.SelectedDataKey["ID_PROJETO"]);
            subModulo.CodModulo = Convert.ToInt32(gvwModulos.SelectedDataKey["ID_MODULO"]);
            subModulo.Descricao = TxtDescricao.Text.ToUpper();
            if (ChkAtivo.Checked)
                subModulo.Ativo = "S";
            else subModulo.Ativo = "N";
            try
            {
                if (btnConfirmar.CommandName == "Incluir")
                {
                    if (ControlClass.CNSubModulos.incluirSubModulo(subModulo))
                    {
                        pnlEdicao.Visible = false;
                        pnlModulos.Visible = true;
                        pnlSubModulos.Visible = true;
                        carregarGridSubModulos();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoInserir, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
                else if (btnConfirmar.CommandName == "Alterar")
                {
                    subModulo.CodSubModulo = Convert.ToInt32(ViewState["ID_SUBMODULO"]);
                    if (ControlClass.CNSubModulos.alterarSubModulo(subModulo))
                    {
                        pnlEdicao.Visible = false;
                        pnlModulos.Visible = true;
                        pnlSubModulos.Visible = true;
                        pnlModulos.Enabled = true;
                        carregarGridSubModulos();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoAlterar, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.Erro, "") + "', function() {});", true);
            }
        }

        protected void gvwSubModulos_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Alert de Confirmação
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Passando por todas as linhas
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
            #endregion
        }

        protected void gvwSubModulos_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgExcluir");
                button.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwSubModulos_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                SubModulo submodulo = new SubModulo();
                int index = int.Parse((String)e.CommandArgument);
                submodulo.CodProjeto = Convert.ToInt32(gvwProjetos.SelectedDataKey["ID_PROJETO"].ToString());
                submodulo.CodModulo = Convert.ToInt32(gvwModulos.SelectedDataKey["ID_MODULO"].ToString());
                submodulo.CodSubModulo = Convert.ToInt32(gvwSubModulos.DataKeys[index]["ID_SUBMODULO"]);
                submodulo = ControlClass.CNSubModulos.getDadosSubModulo(submodulo.CodSubModulo);
                if (e.CommandName == "Alterar")
                {
                    TxtDescricao.Text = submodulo.Descricao.ToUpper();
                    ViewState["ID_SUBMODULO"] = submodulo.CodSubModulo;
                    ChkAtivo.Checked = submodulo.Ativo == "S";
                    lblPnlDescricao.Text = "Alteração SubMódulo";
                    pnlSubModulos.Visible = false;
                    pnlEdicao.Visible = true;
                    pnlProjetos.Enabled = false;
                    btnConfirmar.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    if (ControlClass.CNSubModulos.excluirSubModulo(submodulo.CodSubModulo))
                    {
                        carregarGridSubModulos();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoExcluir, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
            }
            catch
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.Erro, "") + "', function() {});", true);
            }
        }
    }
}